// Copyright (c) 2020 Presto Labs Pte. Ltd.
// Author: jing

#pragma once

#include <map>
#include <memory>
#include <regex>
#include <string>
#include <vector>

// internal
#include "coin2/exchange/base/feed/processor.h"
#include "coin2/exchange/base/market/enums.h"

namespace coin2::exchange::quoinex::feed_v2 {
namespace impl {
using namespace coin2::exchange::base::symbology;
class QuoinexFeedProcessor : public base::feed::FeedParsingProcessor {
 public:
  explicit QuoinexFeedProcessor(
    const std::string& system_name,
    const coin2::exchange::di::ConstantInjection& ci,
    const feed::RawParserConfig& config)
    : FeedParsingProcessor(
        system_name,
        MarketExchangeApi{MarketType::Spot, ExchangeType::Quoinex, "v2"},
        ci, config,
        "cc/coin2/exchange/quoinex/feed_v2/schema.json") {
  }

  void OnTopicRecord(const base::executor::TopicRecordPacket& packet) override;
};

}  // namespace impl
using impl::QuoinexFeedProcessor;
}  // namespace coin2::exchange::quoinex::feed_v2
